package es.cursojavaee.jaxws.biblioteca.model;

import java.util.Date;
import java.util.List;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;

@XmlAccessorType(XmlAccessType.FIELD)
public class Libro {

    @XmlElement(name = "id")
    private Long id;

    @XmlElement(name = "titulo", required = true)
    private String titulo;

    @XmlAttribute(name = "autores")
    private List<String> autores;

    @XmlElement(name = "fechaPublicacion")
    private Date fechaPublicacion;

    @XmlElement(name = "tipo", required = true)
    private Tipo tipo;

    @XmlAttribute(name = "generos")
    private List<Genero> generos;

    public Libro() {
        super();
    }

    public Libro(final Long id, final String titulo, final List<String> autores, final Date fechaPublicacion,
            final Tipo tipo, final List<Genero> generos) {
        super();
        this.id = id;
        this.titulo = titulo;
        this.autores = autores;
        this.fechaPublicacion = fechaPublicacion;
        this.tipo = tipo;
        this.generos = generos;
    }

    public Long getId() {
        return id;
    }

    public void setId(final Long id) {
        this.id = id;
    }

    public String getTitulo() {
        return titulo;
    }

    public void setTitulo(final String titulo) {
        this.titulo = titulo;
    }

    public List<String> getAutores() {
        return autores;
    }

    public void setAutores(final List<String> autores) {
        this.autores = autores;
    }

    public Date getFechaPublicacion() {
        return fechaPublicacion;
    }

    public void setFechaPublicacion(final Date fechaPublicacion) {
        this.fechaPublicacion = fechaPublicacion;
    }

    public Tipo getTipo() {
        return tipo;
    }

    public void setTipo(final Tipo tipo) {
        this.tipo = tipo;
    }

    public List<Genero> getGeneros() {
        return generos;
    }

    public void setGeneros(final List<Genero> generos) {
        this.generos = generos;
    }

    @Override
    public String toString() {
        return "Libro [id=" + id + ", titulo=" + titulo + ", autores=" + autores + ", fechaPublicacion="
                + fechaPublicacion + ", tipo=" + tipo + ", generos=" + generos + "]";
    }
}
